﻿@page "/es/5.8/use-cases/modbus-protocol"
@{
    Layout = "_ArticleLayout";
    ViewBag.Title = "Conexión de dispositivos mediante protocolo Modbus";
}

<nav class="doc-toc">
    <div class="h6">En esta página</div>
    <hr>
    <ul>
        <li><a href="#creating-project">Creación de un proyecto</a></li>
        <li><a href="#database-configuration">Configuración preliminar de la Base de datos</a></li>
        <li><a href="#configuring-communication">Configurando la comunicación con los dispositivos</a></li>
        <li><a href="#creating-channels">Creando canales</a></li>
        <li><a href="#customizing-interface">Personalizando la interfaz de usuario para el Operador</a></li>
        <li><a href="#tags-conversion">Conversión de etiquetas Modbus</a></li>
    </ul>
</nav>

<div class="doc-content">
    <h1>Conexión de dispositivos mediante protocolo Modbus</h1>

    <p>Este artículo describe cómo configurar la comunicación con dispositivos que utilizan el protocolo Modbus. Simple y robusto, Modbus se ha convertido desde que fuera introducido en el protocolo de comunicación estándar de facto, y es hoy un medio comúnmente disponible para interconectar dispositivos electrónicos industriales (ver <a href="https://en.wikipedia.org/wiki/Modbus" target="_blank">Wikipedia</a>). Rapid SCADA soporta las variantes Modbus RTU, ASCII y TCP.</p>

    <p>Secuencia general de configuración:</p>

    <ol>
        <li>Cree un proyecto utilizando la aplicación Administrator.</li>
        <li>Cree un nuevo objeto, una línea de comunicación y los dispositivos.</li>
        <li>Configure la comunicación entre Communicator y los dispositivos.</li>
        <li>Cree canales de entrada en la base de datos de configuración, de acuerdo con las etiquetas de los dispositivos. Cree canales de salida de acuerdo con los comandos.</li>
        <li>Cree las vistas (tablas o esquemas) en las que mostrar datos en la aplicación Webstation. Defina las vistas en la base de datos de configuración.</li>
    </ol>

    <p>La siguiente es una guía paso a paso para configurar un nuevo dispositivo Modbus.</p>

    <h2 id="creating-project">Creación de un proyecto</h2>

    <p>Ejecute Administrator haga clic en el botón <em>New Project</em>. Ingrese el nombre del proyecto en el cuadro de diálogo y haga clic en el botón <em>OK</em>. Si selecciona como plantilla (Template) el proyecto vacío EmptyProject.en-GB, el proceso de configuración a describir será totalmente coherente con este artículo.</p>

    <figure class="figure">
        <img src="modbus-protocol-files/modbus_new_proj_en.png" class="figure-img img-fluid" alt="Creación de un proyecto" />
        <figcaption class="figure-caption">Figura 1. Creación de un proyecto</figcaption>
    </figure>

    <h2 id="database-configuration">Configuración preliminar de la Base de datos</h2>

    <p>Expanda el nodo <em>Configuration Database</em> abra la tabla <em>Objects</em> y agregue una nueva fila para el objeto 2 "Test object" (Objeto de prueba). Vea la Figura 2. Haga clic en el botón <img src="../common-images/add_line.png" /> de la barra de herramientas para abrir el asistente Add Communication lines (Agregar líneas de comunicación). Con el asistente, agregue la línea 1 "Test line". Vea la Figura 3. Después de eso, haga clic en el botón <img src="../common-images/add_device.png" /> Add Device, y agregue el dispositivo 1 "Test device". Vea la Figura 4.</p>

    <figure class="figure">
        <img src="modbus-protocol-files/modbus_add_obj_en.png" class="figure-img img-fluid" alt="Agregando un objeto" />
        <figcaption class="figure-caption">Figura 2. Agregando un objeto</figcaption>
    </figure>

    <figure class="figure">
        <img src="modbus-protocol-files/modbus_add_line_en.png" class="figure-img img-fluid" alt="Agregando una línea de comunicación" />
        <figcaption class="figure-caption">Figura 3. Agregando una línea de comunicación</figcaption>
    </figure>

    <figure class="figure">
        <img src="modbus-protocol-files/modbus_add_device_en.png" class="figure-img img-fluid" alt="Agregando un dispositivo" />
        <figcaption class="figure-caption">Figura 4. Agregando un dispositivo</figcaption>
    </figure>

    <p>Al agregar dispositivos, preste atención a los siguientes campos:</p>

    <dl class="row">
        <dt class="col-sm-3">Device type</dt>
        <dd class="col-sm-9">Modbus</dd>

        <dt class="col-sm-3">Address</dt>
        <dd class="col-sm-9">Dirección Modbus del dispositivo, por ejemplo 1</dd>

        <dt class="col-sm-3">Call number</dt>
        <dd class="col-sm-9">Dirección IP, si el dispositivo se conecta vía Ethernet. De otra forma, déjelo en blanco</dd>

        <dt class="col-sm-3">Communication line</dt>
        <dd class="col-sm-9">"Test line", la que acabamos de crear</dd>
    </dl>

    <p>Abra las tablas <em>Communication lines</em> (Líneas de comunicación) y <em>Devices</em> (Dispositivos) para verificar que la línea de comunicación y el dispositivo fueron agregados correctamente. Asegúrese de que la línea de comunicación y el dispositivo correspondiente fueron creados en la configuración del Communicator.</p>

    <h2 id="configuring-communication">Configurando la comunicación con los dispositivos</h2>

    <p>En el explorador de proyectos, vaya a <em>Communicator – Communication lines - Line Parameters</em> (Parámetros de línea). Configure el canal de comunicación cuyos ajustes están en la página <em>Main Parameters</em> (Parámetros principales). Refiérase a  la Figura 5. En el caso de la comunicación vía Modbus, los tipos de canal más comunes son el <em>TCP client</em> y el <em>Serial Port</em> (puerto serie).</p>

    <figure class="figure">
        <img src="modbus-protocol-files/modbus_line_main_en.png" class="figure-img img-fluid" alt=" Parámetros principales de una línea de comunicación" />
        <figcaption class="figure-caption">Figura 5. Parámetros principales de una línea de comunicación</figcaption>
    </figure>

    <p>Si la comunicación se realiza a través de un puerto serie, los parámetros típicos del puerto serie, según el tipo de Modbus, se muestran en la lista de abajo. En los modos RTU y ASCII los parámetros de la comunicación serial, especificados en la configuración del Communicator, deben coincidir con los mismos parámetros en los dispositivos. Todos los dispositivos conectados a una línea de comunicación deben funcionar con el mismo tipo de Modbus y con los mismos parámetros de comunicación serial, velocidad de transmisión, data bits, paridad y stop bits.</p>

    <table class="table table-hover">
        <thead>
            <tr>
                <th>Modbus RTU</th>
                <th>Modbus ASCII</th>
                <th>Modbus TCP</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>8 data bits,<br />Even parity,<br />1 stop bit</td>
                <td>7 data bits,<br />Even parity,<br />1 stop bit</td>
                <td>-</td>
            </tr>
            <tr>
                <td>8 data bits,<br />No parity,<br />2 stop bits</td>
                <td>7 data bits,<br />No parity,<br />2 stop bits</td>
                <td>-</td>
            </tr>
        </tbody>
    </table>

    <p>Vaya a la página <em>Request Sequence</em> (Secuencia de solicitud) y seleccione la fila "Test device" (refiérase a la Figura 6). Si no se especifican el tiempo y el período de sondeo (encuesta o interrogación) del dispositivo, los dispositivos se sondean (poll) cíclicamente. Los comandos que hayan sido programados se envían inmediatamente después de completar una encuesta.</p>

    <figure class="figure">
        <img src="modbus-protocol-files/modbus_line_req_en.png" class="figure-img img-fluid" alt="Secuencia de solicitud a los dispositivos" />
        <figcaption class="figure-caption">Figura 6. Secuencia de solicitud a los dispositivos</figcaption>
    </figure>

    <p>Haga clic en el botón <em>Properties</em> (Propiedades) para abrir el formulario de propiedades del dispositivo (refiérase a la Figura 7). En el formulario, seleccione el tipo de Modbus que usa el dispositivo que se conectará a la línea, que debe estar indicado en el manual del mismo. En nuestro caso es Modbus TCP.</p>

    <figure class="figure">
        <img src="modbus-protocol-files/modbus_device_props_en.png" class="figure-img img-fluid" alt="Propiedades del dispositivo" />
        <figcaption class="figure-caption">Figura 7. Propiedades del dispositivo</figcaption>
    </figure>

    <p>Haga clic en el botón <img src="../common-images/open.png" /> para seleccionar una plantilla de dispositivo existente, o haga clic en <img src="../common-images/blank.png" /> para crear una nueva plantilla. Cuando se hace clic en el botón Crear <img src="../common-images/blank.png" /> o en el botón Editar <img src="../common-images/edit.png" /> se muestra el <em>Device Template Editor </em> (Editor de plantillas) del dispositivo (refiérase a la Figura 8). El dispositivo del ejemplo utiliza la plantilla existente KpModbus_Adam6015.xml, que se copió previamente en el directorio del proyecto C:\SCADA\Projects\ModbusTest\Instances\Default\ScadaComm\Config\</p>

    <figure class="figure">
        <img src="modbus-protocol-files/modbus_template_en.png" class="figure-img img-fluid" alt="Editor de plantillas de dispositivos" />
        <figcaption class="figure-caption">Figure 8. Editor de plantillas de dispositivos</figcaption>
    </figure>

    <p>La plantilla del dispositivo refleja la estructura de los paquetes Modbus. Los datos solicitados se combinan en grupos de elementos. Cada grupo tiene su nombre, tabla de datos, dirección de inicio y cantidad de elementos. Cada elemento es una etiqueta de un dispositivo, con un dato asociado. Rapid SCADA identifica una etiqueta por su número de señal. Un comando se describe por su nombre, tabla de datos y una dirección. Un número de comando identifica el comando dentro de Rapid SCADA.</p>

    <p>Los nombres de grupos, elementos y comandos son arbitrarios. Las tablas de datos disponibles y las direcciones de los elementos, generalmente están indicados en el manual del dispositivo. Dependiendo del fabricante, el direccionamiento de los elementos puede estar basado en cero o basado en uno, especificados en números decimales o hexadecimales. Por defecto, las direcciones comienzan con 1 y se representan como números decimales. Para cambiar el direccionamiento de plantilla, haga clic en el botón <img src="../common-images/settings.png" /> que abre el cuadro de diálogo de configuración de plantilla (ver Figura 9).</p>

    <figure class="figure">
        <img src="modbus-protocol-files/modbus_template_settings_en.png" class="figure-img img-fluid" alt="Configuración de la plantilla" />
        <figcaption class="figure-caption">Figure 9. Configuración de la plantilla</figcaption>
    </figure>

    <p>Cuando finalice la edición de las propiedades del dispositivo (vea la Figura 7), haga clic en <em>OK</em>. El campo <em>Command line</em> (Línea de comando) de los parámetros del dispositivo contiene el nombre del archivo de plantilla KpModbus_Adam6015.xml. Suba el proyecto al Server con el botón <img src="../common-images/upload.png" /> (upload Configuration).</p>

    <p>En el explorador de proyectos haga doble clic en el nodo del dispositivo, para verificar el estado del dispositivo y la disponibilidad de los datos (vea la Figura 10). Los datos para este ejemplo fueron proporcionados por Modbus Simulator (mod_RSsim.exe).</p>

    <figure class="figure">
        <img src="modbus-protocol-files/modbus_data_en.png" class="figure-img img-fluid" alt=" Datos del dispositivo" />
        <figcaption class="figure-caption">Figura 10. Datos del dispositivo</figcaption>
    </figure>

    <p>En caso de perder la comunicación con el dispositivo, utilice el registro de comunicación en línea para darse cuenta de la causa del problema. Para abrir el registro, haga doble clic en el nodo del árbol <em>Line Stats</em> (estadística de línea) y vaya a la página  <em>Line Log</em>. Allí podrá ver los detalles de cada comunicación en tiempo real y los paquetes de datos pueden ser decodificados por el Rapid SCADA <a href="https://rapidscada.net/modbus/" target="_blank">Online Modbus Parser</a>.</p>

    <h2 id="creating-channels">Creando canales</h2>

    <p>Tras establecer la comunicación con el dispositivo, cree canales de entrada y canales de salida en la base de datos de configuración. La forma más rápida de crear canales es con el asistente llamado por el botón <img src="../common-images/create_cnls.png" />. Si se agregan varios dispositivos del mismo tipo al sistema, la herramienta de clonación de canales puede acelerar la configuración.</p>

    <p>Realice los pasos del asistente (vea las Figuras 11-13), seleccionando la línea de comunicación, el dispositivo y el objeto creado al inicio, de las listas desplegables. Para verificar los números de canal disponibles, use el mapa de canales en el paso 3.</p>

    <figure class="figure">
        <img src="modbus-protocol-files/modbus_create_cnls1_en.png" class="figure-img img-fluid" alt="Creando canales. Paso 1" />
        <figcaption class="figure-caption">Figura 11. Creando canales. Paso 1</figcaption>
    </figure>

    <figure class="figure">
        <img src="modbus-protocol-files/modbus_create_cnls2_en.png" class="figure-img img-fluid" alt="Creando canales. Paso 2" />
        <figcaption class="figure-caption">Figura 12. Creando canales. Paso 2</figcaption>
    </figure>

    <figure class="figure">
        <img src="modbus-protocol-files/modbus_create_cnls3_en.png" class="figure-img img-fluid" alt="Creando canales. Paso 3" />
        <figcaption class="figure-caption">Figura 13. Creando canales. Paso 3</figcaption>
    </figure>

    <p>Al hacer clic en el botón <em>Create</em>, se crean los canales. Los canales se crean automáticamente basándose en la plantilla del dispositivo que se ha creado y asignado al dispositivo en la sección anterior de este artículo. Para ver los canales creados, abra la tabla <em>Input channels &gt; Test device</em> y <em>Output channels &gt; Test device</em>. Se recomienda completar manualmente los campos <em>Quantity</em> (Cantidad), <em>Unit</em> (Unidad) de los canales de entrada y el campo <em>Command values</em> de los canales de salida. Sin embargo, en el caso de nuestro primer experimento es innecesario. Es útil comprender que los canales de entrada están vinculados a las etiquetas del dispositivo utilizando el campo <em>Signal</em> (Señal). Los canales de salida están vinculados a los comandos del dispositivo de acuerdo con el campo<em>Command number</em> (Número de comando).</p>

    <p>Después de completar la edición de la base de datos de configuración, suba el proyecto al Server con el botón <img src="../common-images/upload.png" />. Abra la página de datos del dispositivo en la configuración del Communicator y asegúrese de que los canales de entrada estén vinculados a las etiquetas del dispositivo. La columna <em>Channel</em> (Canal) debe contener los números de los canales de entrada creados (vea la Figura 14).</p>

    <figure class="figure">
        <img src="modbus-protocol-files/modbus_data_bound_en.png" class="figure-img img-fluid" alt="Datos del dispositivo vinculados a los canales" />
        <figcaption class="figure-caption">Figura 14. Datos del dispositivo vinculados a los canales</figcaption>
    </figure>

    <p>Como resultado de las acciones anteriores, los datos deben recopilarse del dispositivo y almacenarse en el archivo. Queda por personalizar la interfaz de usuario para el operador.</p>

    <h2 id="customizing-interface">Personalizando la interfaz de usuario para el Operador</h2>

    <p>Considere crear una vista de tabla para la aplicación Webstation. Si es necesario mostrar datos en un esquema, los pasos para crear una vista son similares.</p>

    <p>Haga clic derecho en el nodo <em>Interface</em> del explorador de proyectos. Primero, seleccione <em>New Folder</em> (Nueva carpeta) en el menú contextual y cree la carpeta ModbusTest. Luego, en el menú contextual de la carpeta creada, seleccione <em>New File</em>(Nuevo archivo). Vea la Figura 15. En la ventana abierta, configure el tipo de vista de tabla, especifique el nombre de archivo ModbusDevice.tbl y haga clic en el botón <em>OK</em> (Aceptar). Vea la Figura 16.</p>

    <figure class="figure">
        <img src="modbus-protocol-files/modbus_interface_menu_en.png" class="figure-img img-fluid" alt="Menú para crear una vista" />
        <figcaption class="figure-caption">Figura 15. Menú para crear una vista</figcaption>
    </figure>

    <figure class="figure">
        <img src="modbus-protocol-files/modbus_interface_file_en.png" class="figure-img img-fluid" alt="Cuadro de dialogo para crear una vista" />
        <figcaption class="figure-caption">Figura 16. Cuadro de dialogo para crear una vista</figcaption>
    </figure>

    <p>El archivo de vista creado aparece en el explorador de proyectos. Al hacer doble clic en el archivo, se abre el <a href="../software-overview/applications#table-editor-application">Table Editor</a>. Ingrese un título y complete los elementos de la vista como se muestra en la Figura 17. Guarde los cambios y cierre el editor.</p>

    <figure class="figure">
        <img src="modbus-protocol-files/modbus_table_editor_en.png" class="figure-img img-fluid" alt="Editando una vista" />
        <figcaption class="figure-caption">Figura 17. Editando una vista</figcaption>
    </figure>

    <p>Después de crear el archivo de vista, especifique el directorio padre y el archivo en la tabla <em>Interface</em> y el archivo en la tabla Interface  de la base de datos de configuración (vea la Figura 18).</p>

    <figure class="figure">
        <img src="modbus-protocol-files/modbus_interface_table_en.png" class="figure-img img-fluid" alt="Agregando una vista en la tabla Interface" />
        <figcaption class="figure-caption">Figura 18. Agregando una vista en la tabla Interface</figcaption>
    </figure>

    <p>Suba el proyecto al Server (servidor) con el botón <img src="../common-images/upload.png" />. Ahora abra su navegador e ingrese la dirección <a href="http://localhost/scada/" target="_blank">http://localhost/scada/</a>. En el formulario de inicio de sesión, use <em>admin / 12345</em> (vea la Figura 19). Si la configuración se realizó correctamente, después de iniciar sesión, verá una tabla con los datos obtenidos del dispositivo, similar a la Figura 20.</p>

    <figure class="figure">
        <img src="modbus-protocol-files/modbus_web1_en.png" class="figure-img img-fluid" alt="Formulario para abrir sesión" />
        <figcaption class="figure-caption">Figura 19. Formulario para abrir sesión</figcaption>
    </figure>

    <figure class="figure">
        <img src="modbus-protocol-files/modbus_web2_en.png" class="figure-img img-fluid" alt="La aplicación Webstation" />
        <figcaption class="figure-caption">Figura 20. La aplicación Webstation</figcaption>
    </figure>

    <h2 id="tags-conversion">Conversión de etiquetas Modbus</h2>

    <p>Los valores de elementos recibidos pueden necesitar una conversión. Una plantilla de dispositivo permite elegir la cantidad de bytes utilizados por un elemento y el orden de bytes. Estas configuraciones definen una conversión inicial. Si es necesario, SCADA-Server realiza una conversión adicional basada en las fórmulas de los canales de entrada en la base de datos de configuración.</p>

    <p>La conversión más simple es proporcional, que se describe mediante la siguiente fórmula:</p>

    <p>X * (B - A) / 2<sup>N</sup> + A, donde A y B son los límites del rango de valores del elemento, N – es el número de bits del valor y X, el valor recibido.</p>

    <p>Otra conversión de uso común es el complemento a dos. Ver <a href="https://en.wikipedia.org/wiki/Two's_complement" target="_blank">Wikipedia</a> por detalles. Las fórmulas se pueden definir en línea en las filas del canal de entrada de la base de datos de configuración o por separado, utilizando la tabla <em>Formulas</em>. El uso de fórmulas se describe en <a href="../software-configuration/using-formulas">esta</a> sección.</p>
</div>
